package br.edu.delta.model;

import java.math.BigDecimal;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * <p>
 * <b>Title:</b> Devolucao
 * </p>
 * 
 * <p>
 * <b>Description:</b> Devolucao
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
@Entity
@Table(name = "tbl_devolucoes")
@SequenceGenerator(name = EntidadeImpl.SEQUENCE_GENERATOR, sequenceName = "seq_tbl_devolucoes", allocationSize = 1, initialValue = 1)
public class Devolucao extends EntidadeImpl {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = -7160982363065678133L;

	/** Atributo qtdDiasAtraso. */
	@Column(name = "qtd_dias_atraso")
	private Integer qtdDiasAtraso;

	/** Atributo valorMulta. */
	@Column(name = "vlr_multa", precision = 10, scale = 2)
	private BigDecimal valorMulta;

	/** Atributo livro. */
	@ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.REFRESH }, optional = false, targetEntity = Livro.class)
	@JoinColumn(insertable = true, unique = false, name = "id_livro", updatable = true, nullable = false)
	private Livro livro;

	/** Atributo emprestimo. */
	@ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.REFRESH }, optional = false, targetEntity = Emprestimo.class)
	@JoinColumn(insertable = true, unique = false, name = "id_emprestimo", updatable = true, nullable = false)
	private Emprestimo emprestimo;

	/**
	 * Retorna o valor do atributo <code>qtdDiasAtraso</code>
	 * 
	 * @return <code>Integer</code>
	 */
	public Integer getQtdDiasAtraso() {

		return qtdDiasAtraso;
	}

	/**
	 * Define o valor do atributo <code>qtdDiasAtraso</code>.
	 * 
	 * @param qtdDiasAtraso
	 */
	public void setQtdDiasAtraso(Integer qtdDiasAtraso) {

		this.qtdDiasAtraso = qtdDiasAtraso;
	}

	/**
	 * Retorna o valor do atributo <code>valorMulta</code>
	 * 
	 * @return <code>BigDecimal</code>
	 */
	public BigDecimal getValorMulta() {

		return valorMulta;
	}

	/**
	 * Define o valor do atributo <code>valorMulta</code>.
	 * 
	 * @param valorMulta
	 */
	public void setValorMulta(BigDecimal valorMulta) {

		this.valorMulta = valorMulta;
	}

	/**
	 * Retorna o valor do atributo <code>livro</code>
	 * 
	 * @return <code>Livro</code>
	 */
	public Livro getLivro() {

		return livro;
	}

	/**
	 * Define o valor do atributo <code>livro</code>.
	 * 
	 * @param livro
	 */
	public void setLivro(Livro livro) {

		this.livro = livro;
	}

	/**
	 * Retorna o valor do atributo <code>emprestimo</code>
	 * 
	 * @return <code>Emprestimo</code>
	 */
	public Emprestimo getEmprestimo() {

		return emprestimo;
	}

	/**
	 * Define o valor do atributo <code>emprestimo</code>.
	 * 
	 * @param emprestimo
	 */
	public void setEmprestimo(Emprestimo emprestimo) {

		this.emprestimo = emprestimo;
	}

}
